package com.nado.extensions.util;

import org.apache.commons.lang.StringUtils;

import com.nado.extensions.data.DataHandler;
import com.nado.extensions.data.DataHandlerException;

/**
 * {@link DataHandler}를 동적으로 생성하고 저장된 값을 반환하는 클래스
 *
 */
public class DataHandlerUtil {

	/**
	 * 지정된 경로를 통해 DataHandler에 저장된 값을 검색한다.
	 *
	 * @param dataHandler 검색하고자 하는 값을 가진 {@link DataHandler}
	 * @param paths	   검색하고자 하는 경로들
	 * @example
	 *
	 * 아래의 예제는 parameter의 값이 value라는 속성에 있을 수도 있고
	 * parameter에 존재할 수도 있는 경우이다.
	 * <pre>
	 * 		DataHandlerUtil.getValue(
	 * 			dataHandler,
	 * 			"parameter[@name='test']/@value", "parameter[@name='test']");
	 * 	</pre>
	 */
	public static String getValue(DataHandler dataHandler, String... paths) {
		String value = null;
		for (String path : paths) {
			try {
				value = dataHandler.get(path);
				if (!StringUtils.isEmpty(value)) {
					return value;
				}
			} catch (DataHandlerException e) {
				// ignore
			}
		}
		return value;
	}
}
